package org.example.pinda.util.string;

import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;

import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * 字符串帮助类
 */
@Slf4j
public class StrHelper {
    /**
     * 将对象转化为字符串，如果对象为空，则返回空字符串
     *
     * @param obj 待转化成字符串的对象
     * @return 字符串
     */
    public static String getObjectValue(Object obj) {
        return obj == null ? StrPool.EMPTY : obj.toString();
    }

    /**
     * 使用utf-8进行编码
     *
     * @param value 待编码的字符串
     * @return 编码后的字符串
     */
    public static String encode(String value) {
        try {
            return URLEncoder.encode(value, "utf-8");
        } catch (Exception e) {
            return StrPool.EMPTY;
        }
    }

    /**
     * 使用utf-8编码进行解码
     *
     * @param value 待解码的字符串
     * @return 解码后的字符串
     */
    public static String decode(String value) {
        try {
            return URLDecoder.decode(value, "utf-8");
        } catch (Exception e) {
            return StrPool.EMPTY;
        }
    }

    /**
     * 判断值是否为空，如果为空则返回默认值，否则返回当前值
     *
     * @param val 待判断的字符串
     * @param def 缺省字符串
     * @return 字符串
     */
    public static String getOrDef(String val, String def) {
        return StrUtil.isEmpty(val) ? def : val;
    }
}
